static void
gpwpl_parse(char* ibuf)
{
- double latdeg, lngdeg;
- char latdir, lngdir;
- char sname[99];
-
- sscanf(ibuf,"$%*2cWPL,%lf,%c,%lf,%c,%98[^*]",
- &latdeg,&latdir,
- &lngdeg,&lngdir,
- sname);
+ QStringList fields = QString(ibuf).split(",", QString::KeepEmptyParts);
- Waypoint* waypt = new Waypoint;
+ double latdeg = 0;
+ if (fields.size() > 1) latdeg = fields[1].toDouble();
+ QChar latdir = 'N';
+ if (fields.size() > 2) latdir = fields[2][0];
+ double lngdeg = 0;
+ if (fields.size() > 3) lngdeg = fields[3].toDouble();
+ QChar lngdir = 'E';
+ if (fields.size() > 4) lngdir = fields[4][0];
+ QString sname;
+ if (fields.size() > 5) sname = fields[5];
if (latdir == 'S') {
latdeg = -latdeg;
}
- waypt->latitude = ddmm2degrees(latdeg);
if (lngdir == 'W') {
lngdeg = -lngdeg;
}
- waypt->longitude = ddmm2degrees(lngdeg);
+ Waypoint* waypt = new Waypoint;
+ waypt->latitude = ddmm2degrees(latdeg);
+ waypt->longitude = ddmm2degrees(lngdeg);
waypt->shortname = sname;
curr_waypt = NULL; /* waypoints won't be updated with GPS fixes */